/*
 * Reactor.h
 *
 *  Created on: 9 Sep 2011
 *      Author: Allan
 */

#ifndef REACTOR_H_
#define REACTOR_H_

// GeoReact includes
#include "Core/KineticSolver.h"
#include "Geochemistry/GeoSystem.h"

class Reactor
{
public:
	Reactor(GeoSystem& system);
	
	void SetMinimumTimeStep(double dtMin);
	
	void SetMaximumTimeStep(double dtMax);
	
	void SetAdaptiveTimeStepControl(double epsAbs, double epsRel);
	
	double GetTimeStep() const;
	
	void React(double& t, double tEnd);
	
private:
	GeoSystem& system;
	
	KineticSolver kineticSolver;
	
	double dtMin, dtMax;
	
	double dt;
};


#endif /* REACTOR_H_ */
